package top.lixunda.ecommerce.server.business.api.entity.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import top.lixunda.ecommerce.server.business.api.entity.BusinessConstants;

import java.time.LocalDateTime;

/**
 * 复制于QiNiuFileDO
 *
 * @author lixunda
 * @version time:2020/3/11 16:00
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class QiNiuFileDatabaseObjectDTO {

    /**
     * 用户类型，普通用户
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    public static final String USER_TYPE_USER = BusinessConstants.USER_TYPE_USER;

    /**
     * 用户类型，店铺用户
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    public static final String USER_TYPE_STORE = BusinessConstants.USER_TYPE_STORE;

    /**
     * 用户类型，官方管理员
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    public static final String USER_TYPE_ADMIN = BusinessConstants.USER_TYPE_ADMIN;

    /**
     * 自动增长主键id
     */
    private Integer id;

    /**
     * 用户id
     */
    private Integer userId;

    /**
     * 用户类型，如用户，店铺，管理员
     */
    private String userType;

    /**
     * 获得文件保存在空间中的资源名。
     */
    private String fileKey;

    /**
     * 获得上传的目标空间名。
     */
    private String bucket;

    /**
     * 文件上传成功后的 HTTP_ETag。若上传时未指定资源ID，Etag将作为资源ID使用。
     */
    private String etag;

    /**
     * 上传的原始文件名。
     */
    private String fname;

    /**
     * 资源尺寸，单位为字节。
     */
    private Double fsize;

    /**
     * 资源类型，例如JPG图片的资源类型为image/jpg。
     */
    private String mimeType;

    /**
     * 上传资源的后缀名，通过自动检测的 mimeType 或者$(fname)的后缀来获取。
     */
    private String ext;

    /**
     * $(fname) 忽略 $(ext) 的文件名。
     */
    private String fprefix;

    /**
     * hash
     */
    private String hash;

    /**
     * 自定义参数1
     */
    private String param1;

    /**
     * 自定义参数2
     */
    private String param2;

    /**
     * 自定义参数3
     */
    private String param3;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

}
